using System.Collections.Generic;
using System.Windows.Forms;

namespace PluginFrame
{
	public interface IExperimentViewService : IPcrFormControl
	{
		ContextMenuStrip ProgramMenu { get; }

		void SwitchExperimentView(int experimentIndex);

		void RefreshExperimentTabs(List<IPcrExperiment> pcrExperiments);

		double GetBlockTemperature(int experimentIndex);

		double GetTubeTemperature(int experimentIndex);

		double GetHotLidTemperature(int experimentIndex);

		string GetRunningPhase(int experimentIndex);

		int GetCycleTimes(int experimentIndex);

		double GetTemperature(int experimentIndex);

		string GetHoldingTime(int experimentIndex);

		string GetRunningTime(int experimentIndex);

		string GetRemainRunningTime(int experimentIndex);

		bool GetWithHotLid(int experimentIndex);

		int GetControlMode(int experimentIndex);

		void SetBlockTemperature(int experimentIndex, double value);

		void SetTubeTemperature(int experimentIndex, double value);

		void SetHotLidTemperature(int experimentIndex, double value);

		void SetRunningPhase(int experimentIndex, string value);

		void SetCycleTimes(int experimentIndex, int value);

		void SetTemperature(int experimentIndex, double value);

		void SetHoldingTime(int experimentIndex, string value);

		void SetRunningTime(int experimentIndex, string value);

		void SetRemainRunningTime(int experimentIndex, string value);

		void SetWithHotLid(int experimentIndex, bool value, string hotLidName, string pcrModuleName);

		void SetControlMode(int experimentIndex, TemperatureControlType controlType, int value);

		void AddExprimentViewGroupBox(GroupBox newGroupBox, string tabName, bool isNextAddToBottom);

		void AddExprimentViewPanel(Panel newPanel, string tabName);

		void RefreshHRMControllerGroupBoxVisible();

		void SetDefaultTemperatureView(int experimentIndex);

		void SetDefaultExperimentProccessView(int experimentIndex);

		void DrawTemperatureCurve(int experimentIndex);

		void LoadPcrProgramToChart(IPcrExperimentProject pcrExperimentProject, bool isSelectProgram, int tabIndex, bool isInitialization);

		void ClearPcrProgramInChart(int tabIndex);

		void RefreshPcrProgramToChart(IPcrProgram pcrProgram, int tabIndex, bool isInitialization);

		void SetSubModuleTemperautreMenuVisible(bool isVisible, int subModuleIndex);

		void SetHotLidTemperautreMenuVisible(bool isVisible, int moduleIndex);

		void InitializeTemperatureCurveSeries(int experimentIndex);

		void DrawSubModuleBlockTemperatureCurve(int experimentIndex, int subModuelIndex, double value);

		void DrawHotLidTemperatureCurve(int experimentIndex, int HotLidIndex, double value);

		void RefreshHotLidCurveDisplay(int experimentIndex, bool isDisplay);

		void SetCurveLegendVisible(IPcrExperiment pcrExperiment, bool isVisible);

		void SetCurveLegendTab(string experimentName, int tabIndex);

		void RefreshChannelCurveLegend(IPcrExperiment pcrExperiment);

		void AddProgramMenuItem(ToolStripItem menuItem);

		void ChangeChannelCurveLegendTabName(string newName, string oldName);
	}
}
